Analyse en Composantes Principales

Marie-Pierre Etienne

ENSAI - CREST

https://marieetienne.github.io/MAF/

2024-11-03

Et on commence avec les manchots

Rappel des données sur les manchots

Données disponibles dans le package palmerpenguins mises à disposition par le Dr. Kristen Gorman et the Palmer Station, Antarctica LTER.

On a mesuré les caractéristiques morphologiques de divers manchots :

Les 6 premières lignes (parmi 333 )

# A tibble: 333 × 4
  bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
           <dbl>         <dbl>             <int>       <int>
1           39.1          18.7               181        3750
2           39.5          17.4               186        3800
3           40.3          18                 195        3250
4           36.7          19.3               193        3450
5           39.3          20.6               190        3650
6           38.9          17.8               181        3625
# ℹ 327 more rows
  • bill_length_mm : la longueur du bec,

  • bill_depth_mm : l’épaisseur du bec,

  • flipper_length_mm : la longueur de la nageoire,

  • body_mass_g : le poids du corps.

Comment visualiser au mieux ces données pour faire apparaître les liens entre variables et identifier des resemblances entre individus ?

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Idée 1 : on représente les liens des variables 2 à 2

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Idée 1 : dangereuse

Voir c’est comprendre : comment représenter l’information contenue dans ce tableau ?

Objectifs

  • Représenter sans perdre trop d’information,
  • Quantifier la perte d’information,
  • Comprendre quelles sont les informations redondantes, (variables liées),
  • Idéalement des individus éloignés dans le nuage initial, restent éloignés dans la représentation

Dans toute la suite, sans perte de généralité, on va considérer que les variables sont centrées.

Si on savait faire une Analyse en Composantes Principales

library(FactoMineR)
dta <- penguins %>% select(bill_length_mm, bill_depth_mm, flipper_length_mm, body_mass_g) 
penguins.PCA <- PCA(X = dta, ncp = 4, graph = FALSE)

L’ACP permet de trouver la projection en 2 dimensions qui préserve au mieux l’information contenu dans le nuage de points (avec peu de déformation).

plot(penguins.PCA, choix = "ind")

Reste à comprendre

  • Comment quantifier l’information contenue dans un nuage de points
  • Comment est construite cette meilleure projection
  • Quels sont les individus bien représentés ?

L’ACP définit de nouvelles variables, les composantes principales qui sont une combinaison linéaire des anciennes variables. On peut représenter les variables dans le premier plan de l’ACP.

plot(penguins.PCA, choix = "var")

Reste à comprendre

  • Comment interpréter cette représentation ?
  • Quelles sont les variables bien représentées ?
  • Que peut on déduire de ce graphique sur le lien entre les variables.
  • Comment lier graphique des individus et graphique des variables

Les données

Mise en forme des données

L’ACP s’applique à des données quantitatives sous forme de tableau. Ce tableau est composé de n individus (lignes) et de p variables (colonnes).

Dans la suite on va noter \({\boldsymbol{X}}\) la matrice des données, \({\boldsymbol{X}}\in {\mathbb{R}}^{n\times p}\).

\(x_{\class{alea}{i}\class{orange}{j}}\) est la valeur de la variable \(\class{orange}{j}\) mesurée pour l’individu \(\class{alea}{i}.\)

\[{\boldsymbol{X}}= \overset{\color{orange}{\begin{matrix}var_1& \ldots \ & \ \ldots \ &\ \ldots\ & \ var_p \end{matrix}}}{\begin{pmatrix} x_{\class{alea}{1}}^{\class{orange}{1}} & \ldots & \ldots &\ldots & x_{\class{alea}{1}}^{\class{orange}{p}}\\ \vdots & & & &\vdots \\ & & x_{\class{alea}{i}}^{\class{orange}{j}} & & \\ \vdots & & & & \vdots \\ x_{\class{alea}{n}}^{\class{orange}{1}} & & & & \ldots x_{\class{alea}{n}}^{\class{orange}{p}}\\ \end{pmatrix}}\]

Deux points de vue complémentaires

Le nuage des individus \(C^n\)

On peut considérer qu’un individu \(i\) est un vecteur \(\class{alea}{\boldsymbol{x}_{i}}\) dans un espace de dimension \(p\). Par convention tous les vecteurs sont des vecteurs colonnes, donc on peut écrire

\[{\boldsymbol{X}}=\begin{pmatrix} \class{alea}{\boldsymbol{x}_{1}}^\top\\ \vdots \\ \class{alea}{\boldsymbol{x}_{n}}^\top\\ \end{pmatrix},\]

L’ensemble des \(n\) vecteurs forme le nuage des individus (ce qu’on représente classiquement).

Le nuage des variables \(C^p\)

On peut considérer qu’une variable \(j\) est un vecteur \(\class{orange}{\boldsymbol{x}^{j}}\) dans un espace de dimension \(n\) et on peut écrire

\[{\boldsymbol{X}}=\begin{pmatrix} \class{orange}{\boldsymbol{x}^{1}} & \ldots & \class{orange}{\boldsymbol{x}^{p}} \end{pmatrix},\]

L’ensemble des \(p\) vecteurs forme le nuage des variables.

Bien sûr les deux nuages sont intimement liés

Mesurer l’information contenue dans un nuage de points

L’inertie par rapport à un point

Definition 1

L’inertie (terme hérité de la physique) par rapport à un point \(a \in {\mathbb{R}}^{p}\) est définie par
\[I_{\boldsymbol{a}} = \frac{1}{n} \sum_{i=1}^n \lVert\boldsymbol{x}_{i} - \boldsymbol{a}\rVert^2 = \frac{1}{n} \sum_{i=1}^n\sum_{k=1}^p (x_i^k -a^k)^2\]

L’inertie par rapport à un point quantifie l’information perdue lorsque le jeu de données est résumé par ce point.

Quel est selon vous le point \(\boldsymbol{a}\) qui minimise l’inertie ?

\[argmax_{\boldsymbol{a}} I_{\boldsymbol{a}} = ??\]

BINGO !!!

Il s’agit du point \(\boldsymbol{g}=\boldsymbol{x_{\bullet}}=({x}_{\bullet}^1, \ldots, {x}_{\bullet}^p )^\top,\) avec \({x}_{\bullet}^k=\frac{1}{n} \sum_{i=1}^n x_{i}^k\), la valeur moyenne de la variable \(k\) sur l’ensemble des individus.

Puisque nous avons supposé que nos variables étaient centrées, \(G=O\) l’origine sur repère.

\[\forall \boldsymbol{a}\in\mathbb{R}^p,\; I_\boldsymbol{a}=I_\boldsymbol{g} + \lVert\boldsymbol{a}- \boldsymbol{g}\rVert^2.\]

Conséquence

Le meilleur résumé du nuage de points se résumant à un point est le barycentre du nuage de points, c’est à dire la moyenne sur chacune des dimensions.

\[I_{\boldsymbol{g}} =\frac{1}{n} \sum_{i=1}^n \left( \sum_{k=1}^p \left( x_{i}^k - x_{\bullet}^k \right)^2 \right) = \sum_{k=1}^p \left( \frac{1}{n} \sum_{i=1}^n \left( x_{i}^k - x_{\bullet}^k \right)^2 \right) = \sum_{k=1}^p Var(\boldsymbol{x}^{k})\] Si les variables sont réduites

\[I = p\]

L’inertie par rapport à un axe

Definition 2

L’inertie par rapport à l’axe \(\Delta\) est définie par \[I_{\boldsymbol{\Delta}} = \frac{1}{n} \sum_{i=1}^n \lVert\boldsymbol{x}_{i} - \boldsymbol{p_i}^{\Delta}\rVert^2 = \frac{1}{n} \sum_{i=1}^n\sum_{k=1}^p (x_i^k -p^{k,\Delta}_i)^2, \quad \mbox{où }\ \boldsymbol{p_i}^{\Delta} \mbox{projeté orthogonal de } \boldsymbol{x_i} \mbox{ sur }\Delta.\]

L’inertie par rapport à l’axe \(\Delta\) quantifie l’information perdue lorsque l’on résume le nuage de points à son projeté sur \(\Delta\).

Identifier \(\Delta\) tel que \(I_{\Delta}\) soit minimale

Ce qui revient à l’axe \(\Delta\) qui assure que la projection sur \(\Delta\) déforme le moins possible le nuage de points.

Dans le cadre de l’ACP, on veut construire une ensemble d’axes orthongonaux (une nouvelle base de \({\mathbb{R}}^p\)), de façon à ce que

  • la projection sur le premier axe, soit le meilleur résumé du nuage de points en une dimension,
  • le deuxième axe est orthogonal au premier et représente “le deuxième meileur choix” …. dans un sens que l’on va définir
  • le troisième …

  • Produit scalaire : Soient deux élements \(\boldsymbol{x}\) et \(\boldsymbol{y}\) de \(\mathbb{R}^p\), le produit scalaire est noté \(<\boldsymbol{x},\boldsymbol{y}>\) et \(<\boldsymbol{x},\boldsymbol{y}>=\sum_{i=1}^p x_i y_i = \boldsymbol{x}^\top \boldsymbol{y}.\)

  • Orthogonalité Soient deux élements \(\boldsymbol{x}\) et \(\boldsymbol{y}\) de \(\mathbb{R}^p\), on dit que \(\boldsymbol{x}\) et \(\boldsymbol{y}\) sont orthogonaux (noté \(\boldsymbol{x}\perp \boldsymbol{y}\)) si \(<\boldsymbol{x},\boldsymbol{y}> = \boldsymbol{x}^\top \boldsymbol{y}=0\).

  • Projection orthogonale On note \(\boldsymbol{a}_u\) le projeté de \(\boldsymbol{a}\) sur la droite \(\Delta\) définit par son vecteur directeur unitaire \(\boldsymbol{u}\) et passant par l’origine \[\boldsymbol{a}_u = < \boldsymbol{a}, \boldsymbol{u} > \boldsymbol{u} = (\boldsymbol{a}^\top \boldsymbol{u})\, \boldsymbol{u}.\] Le vecteur \(\boldsymbol{a_u}\) est orthogonal à \(\boldsymbol{a}-\boldsymbol{a_u}\): \[< \boldsymbol{a_u}, \boldsymbol{a}-\boldsymbol{a_u}> = \left ((\boldsymbol{a}^\top \boldsymbol{u}) \boldsymbol{u}\right)^\top \left ( \boldsymbol{a} - (\boldsymbol{a}^\top \boldsymbol{u})\, \boldsymbol{u} \right)=(\boldsymbol{a}^\top \boldsymbol{u}) (\boldsymbol{u}^\top \boldsymbol{a}) - (\boldsymbol{a}^\top \boldsymbol{u})^2 \boldsymbol{u}^\top \boldsymbol{u} =0 \]

L’inertie par rapport à un sous espace affine

  • Espace orthogonal Soit \(E\) un sous-espace vectoriel de \(\mathbb{R}^p\). On definit \(E^\perp=\{\boldsymbol{x}\in \mathbb{R}^p:\; \forall \boldsymbol{y}\in E,\; \boldsymbol{x}\perp \boldsymbol{y}\}\).

Dans \({\mathbb{R}}^2\), on considère le sous espace vectoriel \(E\), tel que \[ E =\left \lbrace \boldsymbol{x}=\begin{pmatrix} x_1 & x_2 \end{pmatrix}^\top \in {\mathbb{R}}^2 : x_1 = x_2 \right \rbrace \] \(E\) est la droite d’équation \(y=x\).

Qui est \(E^\perp\) ?

Soit \(\boldsymbol{y}\in E^\perp,\) alors

\[\begin{align} 0 & = \boldsymbol{x}^\top \boldsymbol{y}\\ & = \begin{pmatrix} x_1 & x_2 \end{pmatrix} \begin{pmatrix} y_1 \\ y_2 \end{pmatrix}\\ & = x_1 y_1 + x_2 y_2 \\ & = x_1 (y_1 + y_2) \quad (\boldsymbol{x}\in E \Rightarrow x_1 =x_2) \\ \end{align}\]

\[E^\perp = \left \lbrace \boldsymbol{y}=\begin{pmatrix} y_1 & y_2 \end{pmatrix}^\top \in {\mathbb{R}}^2 : y_1 + y_2 = 0 \right \rbrace \]

Definition 3

L’inertie par rapport à un sous espace vectoriel \(E\) est définie par \[I_{E} = \frac{1}{n} \sum_{i=1}^n \lVert\boldsymbol{x}_{i} - \boldsymbol{p_i}^{E}\rVert^2 = \frac{1}{n} \sum_{i=1}^n\sum_{k=1}^p (x_i^k -p^{k,E}_i)^2, \quad \mbox{où }\ \boldsymbol{p_i}^{E} = argmin_{\boldsymbol{y}\in E} d(\boldsymbol{y}, \boldsymbol{x}_{i}), \mbox{i.e. projeté orthogonal de } \boldsymbol{x_i} \mbox{ sur }E.\]

C’est l’inertie perdue lorsque l’on résume le nuage de points à sa projection sur le sous espace \(E\).

Décomposition de l’inertie

Soit \(E\) un sous espace vectoriel de \({\mathbb{R}}^p\), alors \[I = I_E + I_{E^\perp}.\]

Preuve

Un dessin vaut mieux qu’un long discours et Pythagore est ton ami !

\[d(\class{alea}{\boldsymbol{x}_{i}}, O)^2 = d(\boldsymbol{x}_{i}, \class{bleu}{\boldsymbol{x}_{i}^E})^2 + d(\class{alea}{\boldsymbol{x}_{i}}, \class{rouge}{\boldsymbol{x}_{i}^{E^\perp}})^2.\]

\[\begin{align} I & = \frac{1}{n} \sum_{i=1}^n d(\class{alea}{\boldsymbol{x}_{i}}, O)^2 \\ & = \frac{1}{n} \sum_{i=1}^n d(\class{alea}{\boldsymbol{x}_{i}}, \class{bleu}{\boldsymbol{x}_{i}^E})^2 + \frac{1}{n} \sum_{i=1}^n d(\class{alea}{\boldsymbol{x}_{i}}, \class{rouge}{\boldsymbol{x}_{i}^{E^\perp}})^2 \\ & = \class{bleu}{I_E} + \class{rouge}{I_{E^\perp}} \end{align}\]

Principe de la décomposition à venir

  1. Identifier le vecteur \(\boldsymbol{u_1}\) de \({\mathbb{R}}^p\), tel que \(I_{E_1}\) soit minimale avec \(E_1=\left \lbrace \lambda \boldsymbol{u_1}, \lambda \in {\mathbb{R}}\right\rbrace,\)

  2. Dans \(E_1^\perp\), identifier le vecteur \(\boldsymbol{u_2}\) de \({\mathbb{R}}^p\), tel que \(I_{E_2}\) soit minimale avec \(E_2=\left \lbrace \lambda \boldsymbol{u_2}, \lambda \in {\mathbb{R}}\right\rbrace,\)

  3. Dans \(\left ( E_1 \oplus E_2 \right)^\perp\), identifier le vecteur \(\boldsymbol{u_3}\) de \({\mathbb{R}}^p\), tel que ….

Finalement on aura la décomposition

\[I= I_{E_1} + I_{E_2} + \ldots + I_{E_p}, \quad \mbox{avec } I_{E_1} \leq I_{E_2} \leq \ldots \leq I_{E_p}\]

Construction de la base des composantes principales

Se donner des intuitions

Se donner des intuitions

Identifier \(\boldsymbol{u_1}\) - Formalisation

  • On cherche \(\boldsymbol{u_1}\) tel que \(I_{u_1}\) soit minimale mais \(I_{u_1} + I_{u_1^\perp}=I\). Minimiser \(I_{u_1}\) revient à maximiser \(I_{u_1^\perp}\), i.e l’inertie du nuage projeté.

    • Le premier individu se projette en \(\class{alea}{x_{1}}^\top \boldsymbol{u_1}\) sur \(\boldsymbol{u_1}\)
    • Le deuxième individu se projette en \(\class{alea}{x_{2}}^\top \boldsymbol{u_1}\) sur \(\boldsymbol{u_1}\)
  • On rappelle que \[{\boldsymbol{X}}= \begin{pmatrix} \class{alea}{x_{1}}^\top \\ \vdots \\ \class{alea}{x_{n}}^\top \end{pmatrix}.\] La projection de l’individu \(i\) est obtenue en multipliant le vecteur ligne \(\class{alea}{x_{1}}^\top\) par \(\boldsymbol{u_1}\). Le vecteur des coordonnées sur \(\boldsymbol{u_1}\) pour chaque individu est

\[\begin{pmatrix} \class{alea}{x_{1}}^\top \boldsymbol{u_1} \\ \vdots \\ \class{alea}{x_{n}}^\top \boldsymbol{u_1} \end{pmatrix} = X \boldsymbol{u_1}.\]

Minimiser \(I_{u_1^\perp}\)

sous la contrainte \(\lVert\boldsymbol{u_1}\rVert\) \[\begin{align} I_{u_1^\perp} & = \lVert X \boldsymbol{u_1}\rVert^2 \\ & = (X \boldsymbol{u_1})^\top (X \boldsymbol{u_1})\\ & = \boldsymbol{u_1}^\top X^\top X \boldsymbol{u_1} \end{align}\]

\(X^\top X\) est la matrice de covariance, elle est symétrique et définie positive donc diagonalisable. Il existe une matrice \(P\) unitaire \(P^\top P = I_p,\) et \(D\) une matrice diagonale telle que \[X^\top X = P D P^\top.\]

Les termes diagonaux de \(D\) sont les valeurs propres, toutes positives, de \(X^\top X\) rangées par odre décroissant, \(\lambda_1 > \lambda_1 \ldots >\lambda_p\) et \(P\) est la matrice des vecteurs propres associés.

\(\bolsymbol{b}\) est une base orthonormale, la base formée par les vecteurs propres de \(X^\top X\).

Identifier les directions principales

Chercher \(\boldsymbol{u_1}\)

Posons \(\boldsymbol{v_1} = P^\top \boldsymbol{u_1},\) \(\lVert\boldsymbol{v_1}\rVert=1\):

Maximiser \(\boldsymbol{v_1}^\top D \boldsymbol{v_1} = \sum_{k=1}^p v_{1p}^2 \lambda_p\), sous la contrainte \(\sum_{k=1}^p v_{1p}^2=1\)

\[\boldsymbol{v_1} = (1, 0, \ldots, 0)^\top, \quad \boldsymbol{u_1} = P \boldsymbol{v_1} = \begin{pmatrix} P_{11} \\ \vdots \\P_{p1} \end{pmatrix}.\]

\(\boldsymbol{u_1}\) est le premier vecteur propre

Chercher \(\boldsymbol{u_2}\)

On cherche \(\boldsymbol{u_2}\perp \boldsymbol{u_1}\), tel que \(\boldsymbol{u_2}^\top X^\top X \boldsymbol{u_2}\),

Posons \(\boldsymbol{v_2} = P^\top \boldsymbol{u_2},\) \(\lVert\boldsymbol{v_2}\rVert=1\): Maximiser \(\boldsymbol{v_2}^\top D \boldsymbol{v_2} = \sum_{k=1}^p v_{2p}^2 \lambda_p\), sous la contrainte \(\sum_{k=1}^p v_{1p}^2=1\) et \(v_{1p}=0\) pour assurer l’orthogonalité avec \(\boldsymbol{v_1}\)

\[\boldsymbol{v_2} = (0, 1, \ldots, 0)^\top, \quad \boldsymbol{u_2} = P \boldsymbol{v_2} = \begin{pmatrix} P_{12} \\ \vdots \\P_{p2} \end{pmatrix}.\]

\(\boldsymbol{u_2}\) est le deuxième vecteur propre

Illustration on the Penguins data

library(FactoMineR)

penguins.PCA <- PCA(X = penguins, 
                    scale.unit = FALSE, ## should we scale the data, let's lmention this later
                    ncp = 4, ## number of components : as many as initial variables
                    graph = FALSE, ## no graph right now
                    quali.sup = c(1, 2, 7,8)) ## to indicate the column number of qualitative variable
penguins.PCA$eig

penguins.PCA$svd$V ## what is named P in the lecture
         eigenvalue percentage of variance cumulative percentage of variance
comp 1 6.465859e+05           9.998932e+01                          99.98932
comp 2 5.058345e+01           7.822325e-03                          99.99715
comp 3 1.610647e+01           2.490736e-03                          99.99964
comp 4 2.353778e+00           3.639929e-04                         100.00000
             [,1]        [,2]        [,3]          [,4]
[1,]  0.004003162  0.31927773  0.94126475 -0.1098470736
[2,] -0.001154327 -0.08684753  0.14449479  0.9856862728
[3,]  0.015194547  0.94354238 -0.30518986  0.1278908060
[4,]  0.999875876 -0.01571702  0.00103611 -0.0003657482

Mise en oeuvre pratique

Attention aux unités

Représentation des individus

Représentation des variables

Contribution des individus

Contribution des variables

Un exemple de bout en bout

Une autre utilisation de l’ACP

Bilan